1. Field of the Invention
The present invention generally relates to input/output (I/O) processing in data processing systems and, more particularly, to systems and methods of transferring information between the channel subsystem and I/O devices.
2. Description of the Prior Art
As used herein, the terms "input" and "output" are used to describe the transfer of data between devices, referred to as input/output (I/O) devices, and main storage in a data processing system. I/O devices typically include Direct Access Storage Devices (DASDs), such as disk and tape files. An operation involving a transfer of data between an I/O device and main storage is referred to as an I/O operation. In IBM ESA/390 data processing systems, the facilities used to control I/O operations are collectively called the channel subsystem. The I/O devices and their control units along with the channel subsystem are collectively called the I/O subsystem.
The channel subsystem directs the flow of information between I/O devices and main storage. It uses one or more channel paths as the communication link in managing this flow of information. As part of I/O processing, the channel subsystem also executes a path management operation. Within the channel subsystem are subchannels, one subchannel being provided for and dedicated to each I/O device accessible to the channel subsystem. Each subchannel provides information concerning the associated I/O device, its attachment to the channel subsystem, I/O operations and other functions involving the associated device. I/O devices are attached through control units to the channel subsystem by means of a channel path. Control units may be attached to the channel subsystem by more than one channel path and an I/O device may be attached to more than one control unit.
The subchannel provides the logical appearance of a device to a program. The subchannel consists of internal storage that contains information in the form of a Channel Control Word (CCW) address, channel-path identifiers, device number, count, status indications, as well as other information. I/O operations can be initiated by instructions executed by the Central Processing Unit (CPU) such as the start subchannel instruction. This instruction is part of a CPU program. When a start subchannel is executed, parameters are passed to the target subchannel requesting the channel subsystem to perform a start function with the associated I/O device.
An I/O operation is accomplished by the decoding and execution of a CCW by the channel subsystem and the I/O device. One or more CCWs are arranged for sequential execution for a channel program and are executed as one or more I/O operations, respectively. Both instructions and CCWs are fetched from main storage, and their respective formats are common for all types of I/O devices. The modifier bits in the command code of a CCW may specify device dependent operations such as rewinding tape or positioning the access mechanism on a disk drive.
Further details on I/O operations, particularly as they pertain to the ESA/390 data processing systems, may be found in the IBM Enterprise Systems Architecture/390 Principles of Operation, Publication SA22-7201-00, and the IBM Enterprise Systems Architecture/390 ESCON I/O Interface, Publication SA22-7201, both published by IBM Corp. See also the article by C. A. Scalzi et al. entitled "Enterprise Systems Architecture/370: An architecture for multiple virtual space access and authorization" published in IBM Systems Journal, vol. 28, no. 1, 1989, for additional background of this environment.
Current channels and control units are synchronized together through most of an I/O operation, even with the non-synchronous capability of control units like that used with the IBM 3990 control unit. Typically, in an IBM System 390 family or processors, the I/O request to transfer data (read or write) will contain multiple channel control words (CCWs). The CCWs include commands such as "Define Extent" chained to a "Locate Record" followed by the command to either read or write. In the System 390 architecture, the channel and device are allowed to disconnect from each other, in the middle of an I/O operation, only between a Channel-end and a Device-end when a Chain Command has been indicated. With both the channel and device connected to each other for most of the operation, progress at either end is tied to progress on both ends.
A typical channel I/O request to a direct access storage device (DASD) attached via a channel can keep the channel busy for over a thousand microseconds when less than fifty microseconds are used to actually transfer data, even with a "cache hit" in a 3990 control unit. This very inefficient utilization of the channel requires large numbers of channels in the I/O subsystem to provide sufficient bandwidth. Large numbers of channels make the design of the channel subsystem complex and costly. Since a majority of the control units attached to channels in the computer complex are typically DASD control units, improvements in channel utilization are tied to improvements in DASD control unit utilization.